package com.kingyun.gpsinspection.purificationservice.facade.service.som;

import com.alibaba.fastjson.JSONObject;
import com.kingyun.gpsinspection.purificationservice.facade.model.som.*;

import java.math.BigDecimal;
import java.util.List;

/**
 * 工单相关service
 * Created by yangcs on 2016/11/21.
 */
public interface SomWorkOrderService {
    /**
     * 工单查看列表
     * @param workOrder 查询参数
     * @return
     */
    JSONObject list(WorkOrder workOrder);

    /**
     * 根据工单ID查询工单
     * @param workOrderId 工单ID
     * @return
     */
    WorkOrder queryById(String workOrderId);

    /**
     * 遗留工单列表
     * @param workOrder 查询参数
     * @return
     */
    JSONObject unfinishList(WorkOrder workOrder);

    /**
     * 遗留工单提醒
     * @param workOrderId 工单ID
     * @return
     */
    Integer updateTimeById(String workOrderId);

    /**
     * 工单台帐
     * @param workOrder 查询参数
     * @return
     */
    JSONObject order(WorkOrder workOrder);

    /**
     * 作业条件准备
     * @param workOrder 查询参数
     * @return
     */
    JSONObject opcList(WorkOrder workOrder);

    /**
     * 作业条件确认
     * @param workOrder 查询参数
     * @return
     */
    JSONObject sureListAjax(WorkOrder workOrder);

    /**
     * 遗留工单申请
     * @param workOrderId 工单id
     * @return
     */
    int updateCanFinish(String workOrderId, Integer canFinish, String userId, String reason);

    /**
     * 关键操作申请
     * @param workOrderId
     * @param status
     * @return
     */
    int updateStatus(String workOrderId, Integer status);

    /**
     * 根据工单id，操作单元/工作内容id，版本 查询步骤信息
     * @param workOrderId   工单id
     * @param cellId        操作单元/工作内容id
     * @param stepVersion   版本
     * @param cellResultId  工单对应完成情况id
     * @return
     */
    List<UnitStepResult> findByWorkOrderId(String workOrderId, String cellId, BigDecimal stepVersion, String cellResultId);

    List<UnitStepResult> findByWorkOrderId(String workOrderId, String cellId, BigDecimal stepVersion);

    /**
     * 按照工单ID查询
     * @param workOrderId   工单id
     * @return
     */
    WorkOrder selectById(String workOrderId);


    /**
     * 工单上报
     * @param result
     */
    String addOrder(FacadeWorkCellResult result, String userId);

    /**
     * 更新工单信息
     * @param workOrder
     * @return
     */
    int updateWorkOrder(WorkOrder workOrder);

    /**
     * 更新工单状态
     * @param workOrderId
     * @param status
     * @return
     */
    int updateSataus(String workOrderId, int status, String remark);

    /**
     * 工单统计
     * @param workOrder
     * @return
     */
    JSONObject orderCount(WorkOrder workOrder);

    /**
     * 根据工单的任务类型统计工单数量
     * @param workOrder
     * @return
     */
    List<OrderCount> orderTaskTypeCount(WorkOrder workOrder);

    /**
     * 整体完成未完成饼图统计
     * @param workOrder
     * @return
     */
    List<OrderCount> orderStatusCount(WorkOrder workOrder);

    /**
     * 工单统计-工单列表数据
     * @param workOrder
     * @return
     */
    JSONObject countData(WorkOrder workOrder);

    /**
     * 获取工单执行人
     * @param workOrderId
     * @return
     */
    String getOrderUser(String workOrderId);

}
